a tool for shared writing and social publishing
at debug/datetime 48 lines 1.9 kB view raw
1"use client"; 2import { Fact, PermissionToken, ReplicacheProvider } from "src/replicache"; 3import type { Attribute } from "src/replicache/attributes"; 4import { SelectionManager } from "components/SelectionManager"; 5import { Pages } from "components/Pages"; 6import { 7 ThemeBackgroundProvider, 8 ThemeProvider, 9} from "components/ThemeManager/ThemeProvider"; 10import { LeafletFooter } from "./Footer"; 11import { EntitySetProvider } from "components/EntitySetProvider"; 12import { AddLeafletToHomepage } from "components/utils/AddLeafletToHomepage"; 13import { UpdateLeafletTitle } from "components/utils/UpdateLeafletTitle"; 14import { useUIState } from "src/useUIState"; 15import { LeafletLayout } from "components/LeafletLayout"; 16 17export function Leaflet(props: { 18 token: PermissionToken; 19 initialFacts: Fact<Attribute>[]; 20 leaflet_id: string; 21}) { 22 return ( 23 <ReplicacheProvider 24 rootEntity={props.leaflet_id} 25 token={props.token} 26 name={props.leaflet_id} 27 initialFacts={props.initialFacts} 28 > 29 <EntitySetProvider 30 set={props.token.permission_token_rights[0].entity_set} 31 > 32 <ThemeProvider entityID={props.leaflet_id}> 33 <ThemeBackgroundProvider entityID={props.leaflet_id}> 34 <UpdateLeafletTitle entityID={props.leaflet_id} /> 35 <AddLeafletToHomepage /> 36 <SelectionManager /> 37 {/* we need the padding bottom here because if we don't have it the mobile footer will cut off... 38 the dropshadow on the page... the padding is compensated by a negative top margin in mobile footer */} 39 <LeafletLayout className="!pb-[64px] sm:!pb-6"> 40 <Pages rootPage={props.leaflet_id} /> 41 </LeafletLayout> 42 <LeafletFooter entityID={props.leaflet_id} /> 43 </ThemeBackgroundProvider> 44 </ThemeProvider> 45 </EntitySetProvider> 46 </ReplicacheProvider> 47 ); 48}